home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / net / ieee80211_radiotap.h < prev    next >
C/C++ Source or Header  |  2006-05-11  |  9KB  |  236 lines

  1. /* $FreeBSD: src/sys/net80211/ieee80211_radiotap.h,v 1.5 2005/01/22 20:12:05 sam Exp $ */
  2. /* $NetBSD: ieee80211_radiotap.h,v 1.11 2005/06/22 06:16:02 dyoung Exp $ */
  3.  
  4. /*-
  5.  * Copyright (c) 2003, 2004 David Young.  All rights reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  * 2. Redistributions in binary form must reproduce the above copyright
  13.  *    notice, this list of conditions and the following disclaimer in the
  14.  *    documentation and/or other materials provided with the distribution.
  15.  * 3. The name of David Young may not be used to endorse or promote
  16.  *    products derived from this software without specific prior
  17.  *    written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY
  20.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  21.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  22.  * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DAVID
  23.  * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  25.  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  26.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  27.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  28.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  29.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  30.  * OF SUCH DAMAGE.
  31.  */
  32.  
  33. /*
  34.  * Modifications to fit into the linux IEEE 802.11 stack,
  35.  * Mike Kershaw (dragorn@kismetwireless.net)
  36.  */
  37.  
  38. #ifndef IEEE80211RADIOTAP_H
  39. #define IEEE80211RADIOTAP_H
  40.  
  41. #include <linux/if_ether.h>
  42. #include <linux/kernel.h>
  43.  
  44. #ifndef ARPHRD_IEEE80211_RADIOTAP
  45. #define ARPHRD_IEEE80211_RADIOTAP 803    /* IEEE 802.11 + radiotap header */
  46. #endif
  47.  
  48. /* Radiotap header version (from official NetBSD feed) */
  49. #define IEEE80211RADIOTAP_VERSION    "1.5"
  50. /* Base version of the radiotap packet header data */
  51. #define PKTHDR_RADIOTAP_VERSION        0
  52.  
  53. /* A generic radio capture format is desirable. There is one for
  54.  * Linux, but it is neither rigidly defined (there were not even
  55.  * units given for some fields) nor easily extensible.
  56.  *
  57.  * I suggest the following extensible radio capture format. It is
  58.  * based on a bitmap indicating which fields are present.
  59.  *
  60.  * I am trying to describe precisely what the application programmer
  61.  * should expect in the following, and for that reason I tell the
  62.  * units and origin of each measurement (where it applies), or else I
  63.  * use sufficiently weaselly language ("is a monotonically nondecreasing
  64.  * function of...") that I cannot set false expectations for lawyerly
  65.  * readers.
  66.  */
  67.  
  68. /* XXX tcpdump/libpcap do not tolerate variable-length headers,
  69.  * yet, so we pad every radiotap header to 64 bytes. Ugh.
  70.  */
  71. #define IEEE80211_RADIOTAP_HDRLEN    64
  72.  
  73. /* The radio capture header precedes the 802.11 header. */
  74. struct ieee80211_radiotap_header {
  75.     u8 it_version;        /* Version 0. Only increases
  76.                  * for drastic changes,
  77.                  * introduction of compatible
  78.                  * new fields does not count.
  79.                  */
  80.     u8 it_pad;
  81.     u16 it_len;        /* length of the whole
  82.                  * header in bytes, including
  83.                  * it_version, it_pad,
  84.                  * it_len, and data fields.
  85.                  */
  86.     u32 it_present;        /* A bitmap telling which
  87.                  * fields are present. Set bit 31
  88.                  * (0x80000000) to extend the
  89.                  * bitmap by another 32 bits.
  90.                  * Additional extensions are made
  91.                  * by setting bit 31.
  92.                  */
  93. };
  94.  
  95. /* Name                                 Data type       Units
  96.  * ----                                 ---------       -----
  97.  *
  98.  * IEEE80211_RADIOTAP_TSFT              u64       microseconds
  99.  *
  100.  *      Value in microseconds of the MAC's 64-bit 802.11 Time
  101.  *      Synchronization Function timer when the first bit of the
  102.  *      MPDU arrived at the MAC. For received frames, only.
  103.  *
  104.  * IEEE80211_RADIOTAP_CHANNEL           2 x u16   MHz, bitmap
  105.  *
  106.  *      Tx/Rx frequency in MHz, followed by flags (see below).
  107.  *
  108.  * IEEE80211_RADIOTAP_FHSS              u16       see below
  109.  *
  110.  *      For frequency-hopping radios, the hop set (first byte)
  111.  *      and pattern (second byte).
  112.  *
  113.  * IEEE80211_RADIOTAP_RATE              u8        500kb/s
  114.  *
  115.  *      Tx/Rx data rate
  116.  *
  117.  * IEEE80211_RADIOTAP_DBM_ANTSIGNAL     int8_t          decibels from
  118.  *                                                      one milliwatt (dBm)
  119.  *
  120.  *      RF signal power at the antenna, decibel difference from
  121.  *      one milliwatt.
  122.  *
  123.  * IEEE80211_RADIOTAP_DBM_ANTNOISE      int8_t          decibels from
  124.  *                                                      one milliwatt (dBm)
  125.  *
  126.  *      RF noise power at the antenna, decibel difference from one
  127.  *      milliwatt.
  128.  *
  129.  * IEEE80211_RADIOTAP_DB_ANTSIGNAL      u8        decibel (dB)
  130.  *
  131.  *      RF signal power at the antenna, decibel difference from an
  132.  *      arbitrary, fixed reference.
  133.  *
  134.  * IEEE80211_RADIOTAP_DB_ANTNOISE       u8        decibel (dB)
  135.  *
  136.  *      RF noise power at the antenna, decibel difference from an
  137.  *      arbitrary, fixed reference point.
  138.  *
  139.  * IEEE80211_RADIOTAP_LOCK_QUALITY      u16       unitless
  140.  *
  141.  *      Quality of Barker code lock. Unitless. Monotonically
  142.  *      nondecreasing with "better" lock strength. Called "Signal
  143.  *      Quality" in datasheets.  (Is there a standard way to measure
  144.  *      this?)
  145.  *
  146.  * IEEE80211_RADIOTAP_TX_ATTENUATION    u16       unitless
  147.  *
  148.  *      Transmit power expressed as unitless distance from max
  149.  *      power set at factory calibration.  0 is max power.
  150.  *      Monotonically nondecreasing with lower power levels.
  151.  *
  152.  * IEEE80211_RADIOTAP_DB_TX_ATTENUATION u16       decibels (dB)
  153.  *
  154.  *      Transmit power expressed as decibel distance from max power
  155.  *      set at factory calibration.  0 is max power.  Monotonically
  156.  *      nondecreasing with lower power levels.
  157.  *
  158.  * IEEE80211_RADIOTAP_DBM_TX_POWER      int8_t          decibels from
  159.  *                                                      one milliwatt (dBm)
  160.  *
  161.  *      Transmit power expressed as dBm (decibels from a 1 milliwatt
  162.  *      reference). This is the absolute power level measured at
  163.  *      the antenna port.
  164.  *
  165.  * IEEE80211_RADIOTAP_FLAGS             u8        bitmap
  166.  *
  167.  *      Properties of transmitted and received frames. See flags
  168.  *      defined below.
  169.  *
  170.  * IEEE80211_RADIOTAP_ANTENNA           u8        antenna index
  171.  *
  172.  *      Unitless indication of the Rx/Tx antenna for this packet.
  173.  *      The first antenna is antenna 0.
  174.  *
  175.  * IEEE80211_RADIOTAP_FCS               u32       data
  176.  *
  177.  *    FCS from frame in network byte order.
  178.  */
  179. enum ieee80211_radiotap_type {
  180.     IEEE80211_RADIOTAP_TSFT = 0,
  181.     IEEE80211_RADIOTAP_FLAGS = 1,
  182.     IEEE80211_RADIOTAP_RATE = 2,
  183.     IEEE80211_RADIOTAP_CHANNEL = 3,
  184.     IEEE80211_RADIOTAP_FHSS = 4,
  185.     IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5,
  186.     IEEE80211_RADIOTAP_DBM_ANTNOISE = 6,
  187.     IEEE80211_RADIOTAP_LOCK_QUALITY = 7,
  188.     IEEE80211_RADIOTAP_TX_ATTENUATION = 8,
  189.     IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9,
  190.     IEEE80211_RADIOTAP_DBM_TX_POWER = 10,
  191.     IEEE80211_RADIOTAP_ANTENNA = 11,
  192.     IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12,
  193.     IEEE80211_RADIOTAP_DB_ANTNOISE = 13,
  194.     IEEE80211_RADIOTAP_EXT = 31,
  195. };
  196.  
  197. /* Channel flags. */
  198. #define    IEEE80211_CHAN_TURBO    0x0010    /* Turbo channel */
  199. #define    IEEE80211_CHAN_CCK    0x0020    /* CCK channel */
  200. #define    IEEE80211_CHAN_OFDM    0x0040    /* OFDM channel */
  201. #define    IEEE80211_CHAN_2GHZ    0x0080    /* 2 GHz spectrum channel. */
  202. #define    IEEE80211_CHAN_5GHZ    0x0100    /* 5 GHz spectrum channel */
  203. #define    IEEE80211_CHAN_PASSIVE    0x0200    /* Only passive scan allowed */
  204. #define    IEEE80211_CHAN_DYN    0x0400    /* Dynamic CCK-OFDM channel */
  205. #define    IEEE80211_CHAN_GFSK    0x0800    /* GFSK channel (FHSS PHY) */
  206.  
  207. /* For IEEE80211_RADIOTAP_FLAGS */
  208. #define    IEEE80211_RADIOTAP_F_CFP    0x01    /* sent/received
  209.                          * during CFP
  210.                          */
  211. #define    IEEE80211_RADIOTAP_F_SHORTPRE    0x02    /* sent/received
  212.                          * with short
  213.                          * preamble
  214.                          */
  215. #define    IEEE80211_RADIOTAP_F_WEP    0x04    /* sent/received
  216.                          * with WEP encryption
  217.                          */
  218. #define    IEEE80211_RADIOTAP_F_FRAG    0x08    /* sent/received
  219.                          * with fragmentation
  220.                          */
  221. #define    IEEE80211_RADIOTAP_F_FCS    0x10    /* frame includes FCS */
  222. #define    IEEE80211_RADIOTAP_F_DATAPAD    0x20    /* frame has padding between
  223.                          * 802.11 header and payload
  224.                          * (to 32-bit boundary)
  225.                          */
  226.  
  227. /* Ugly macro to convert literal channel numbers into their mhz equivalents
  228.  * There are certianly some conditions that will break this (like feeding it '30')
  229.  * but they shouldn't arise since nothing talks on channel 30. */
  230. #define ieee80211chan2mhz(x) \
  231.     (((x) <= 14) ? \
  232.     (((x) == 14) ? 2484 : ((x) * 5) + 2407) : \
  233.     ((x) + 1000) * 5)
  234.  
  235. #endif                /* IEEE80211_RADIOTAP_H */
  236.